草庐IT

Swift 继承

全部标签

c# - .Net继承和方法重载

这是一个代码示例:classProgram{staticvoidMain(string[]args){varobj=newDerivedClass();obj.SomeMethod(5);}}classBaseClass{internalvoidSomeMethod(inta){}}classDerivedClass:BaseClass{internalvoidSomeMethod(longa){}}有人能解释一下为什么调用派生类的方法(而不是基类方法)吗?对于这种情况,我需要一个详细的解释。如果您提供指向任何有用文章的链接,我将不胜感激。谢谢。 最佳答案

c# - Int32既然是值类型,为什么要继承.ToString()呢?

Thesearethedocs关于提示此问题的.ToString()。他们说:BecauseObjectisthebaseclassofallreferencetypesinthe.NETFramework,thisbehavior[.ToString()]isinheritedbyreferencetypesthatdonotoverridetheToStringmethod.进一步说明:Forexample,thebasetypessuchasChar,Int32,andStringprovideToStringimplementations但是Int32是一个结构,因此必须是一个

C#:解决继承类与其基类之间的无效转换异常

我有两个类,名为Post和Question。问题定义为:publicclassQuestion:Post{//...}我的Question类没有覆盖Post的任何成员,它只是表达了一些其他的。我想完成的事情我有一个Post类型的对象,其成员已填充。现在,我想将其转换为一个问题,以便我可以为其他几个成员添加值。这是我当前的代码,使用显式转换:PostpostToQuestion=newPost();//PopulatethePost...Questionques=(Question)postToQuestion;//-->thisistheerror!//Filltheotherpart

c# - 实现对公众只读但对继承人可写的属性的最佳方法是什么?

如果我有一个我想让继承者写入的属性,但在外部保持只读,那么实现它的首选方法是什么?我通常会选择这样的东西:privateobjectm_myProp;publicobjectMyProp{get{returnm_myProp;}}protectedvoidSetMyProp(objectvalue){m_myProp=value;}有没有更好的办法? 最佳答案 privateobjectm_myProp;publicobjectMyProp{get{returnm_myProp;}protectedset{m_myProp=valu

c# - 为什么 .NET 中的每个类都继承自 Object?

我不明白...为什么他们需要一个共同的基地? 最佳答案 这个问题预设了一个谎言。它们不需要通用的基类型。这个选择并不是迫不得已。这是出于为客户提供最佳值(value)的愿望。在设计类型系统或与此相关的任何其他事物时,有时您会到达决策点——您必须决定X或非X。公共(public)基类型或非公共(public)基类型。当发生这种情况时,你权衡X的成本和yield以确定净值,然后你权衡非X的成本和yield以确定净值,然后选择值(value)更高的那个。具有通用基类型的yield大于成本,由此产生的净yield大于没有通用基类型的净yie

c# - NUnit 不遵守属性继承

我对NUnit有疑问-想知道是否有人有任何想法。我们使用的是NUnit2.5.3.9345和C#3.5。采用以下代码:publicclassUnitTestBase{[TestFixtureSetUp]publicvoidSetUpTestFixture(){//Dosomethinginbase}}[TestFixture]publicclassSomeTestClass:UnitTestBase{[TestFixtureSetUp]publicvoidFixtureSetUp(){//Dosomethingintestclass}[Test]publicvoidSomeTest()

c# - 如何处理 C# 中缺少多重继承的问题

我正在为“可运行”的东西开发一个迷你框架。(它们是实验、测试、任务等)//Somethingthat"runs"(insomecoordinatedway)multiple"runnable"things.interfaceIRunnableOfwhere:IRunnable//Providebase-classfunctionalityfora"runner"abstractclassRunnerBase:IRunnableOfclassSequentialRunner:RunnerBase//Sameinterface,differentbehavior.classConcurre

c# - 重写继承方法时避免显式类型转换

我有一个基础抽象类,它也实现了一个特定的接口(interface)。publicinterfaceIMovablewhereTEntity:classwhereT:struct{TEntityMove(IMovermoverProvider);}publicabstractclassAnimal:IMovable{...publicvirtualAnimalMove(IMovermoverProvider){//performsmovementusingprovidedmover}}然后我继承了一些类,其中一些类必须重写基类的接口(interface)实现方法。publicclassS

c# - 更改继承类中的抽象方法签名

假设我有一个名为Engine的类作为抽象基类。我还有派生自它的ElectrictEngine和FuelEngine类。我想创建一个为引擎加油的方法。我是否应该将其作为基类级别的抽象方法并以通用方式命名,例如fillUpEnergy?问题是,如果我有一个电动引擎,该方法采用的参数数量与燃料引擎需要传递的参数数量不同。因此,方法的签名不同。此外,是否有任何聪明的方法可以将通用方法用于两个引擎,但将其包装在更具体的名称中?例如:对于燃料发动机,“加油”,对于电动发动机,“充电电池”?同时对用户隐藏泛型方法? 最佳答案 在这种情况下,我会为

c# - Log4net - 使用继承时的最佳策略

我在我的应用程序中集成了log4net。我有一些帮助方法来帮助记录调用log4net。重构时,我打算将这些方法移到基类中,这样代码就不会在其他派生类中重复。在没有继承模型的情况下,以下在每个类中都能正常工作privatestaticreadonlyILogLog=LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);将以上内容放在基类中将返回声明类型作为基类而不是派生类。将此声明移至基类的最佳方法是什么?目前,我可以想到几种方法来实现这一点,但没有发现它们是最佳的。 最佳答案